using System;
using System.Runtime.CompilerServices;
using ns20;

namespace Newtonsoft.Json.Serialization
{
	public class JsonProperty
	{
		internal Required? nullable_0;

		internal bool bool_0;

		internal object object_0;

		private string string_0;

		private bool bool_1;

		[CompilerGenerated]
		private JsonContract jsonContract_0;

		[CompilerGenerated]
		private Type type_0;

		[CompilerGenerated]
		private int? nullable_1;

		[CompilerGenerated]
		private string string_1;

		[CompilerGenerated]
		private IValueProvider ivalueProvider_0;

		[CompilerGenerated]
		private Type type_1;

		[CompilerGenerated]
		private JsonConverter jsonConverter_0;

		[CompilerGenerated]
		private JsonConverter jsonConverter_1;

		[CompilerGenerated]
		private bool bool_2;

		[CompilerGenerated]
		private bool bool_3;

		[CompilerGenerated]
		private bool bool_4;

		[CompilerGenerated]
		private bool bool_5;

		[CompilerGenerated]
		private bool? nullable_2;

		[CompilerGenerated]
		private NullValueHandling? nullable_3;

		[CompilerGenerated]
		private DefaultValueHandling? nullable_4;

		[CompilerGenerated]
		private ReferenceLoopHandling? nullable_5;

		[CompilerGenerated]
		private ObjectCreationHandling? nullable_6;

		[CompilerGenerated]
		private TypeNameHandling? nullable_7;

		[CompilerGenerated]
		private Predicate<object> predicate_0;

		[CompilerGenerated]
		private Predicate<object> predicate_1;

		[CompilerGenerated]
		private Action<object, object> action_0;

		[CompilerGenerated]
		private JsonConverter jsonConverter_2;

		[CompilerGenerated]
		private bool? nullable_8;

		[CompilerGenerated]
		private TypeNameHandling? nullable_9;

		[CompilerGenerated]
		private ReferenceLoopHandling? nullable_10;

		internal JsonContract JsonContract_0
		{
			[CompilerGenerated]
			get
			{
				return jsonContract_0;
			}
			[CompilerGenerated]
			set
			{
				jsonContract_0 = value;
			}
		}

		public string PropertyName
		{
			get
			{
				return string_0;
			}
			set
			{
				string_0 = value;
				method_0();
			}
		}

		public Type DeclaringType
		{
			[CompilerGenerated]
			get
			{
				return type_0;
			}
			[CompilerGenerated]
			set
			{
				type_0 = value;
			}
		}

		public int? Order
		{
			[CompilerGenerated]
			get
			{
				return nullable_1;
			}
			[CompilerGenerated]
			set
			{
				nullable_1 = value;
			}
		}

		public string UnderlyingName
		{
			[CompilerGenerated]
			get
			{
				return string_1;
			}
			[CompilerGenerated]
			set
			{
				string_1 = value;
			}
		}

		public IValueProvider ValueProvider
		{
			[CompilerGenerated]
			get
			{
				return ivalueProvider_0;
			}
			[CompilerGenerated]
			set
			{
				ivalueProvider_0 = value;
			}
		}

		public Type PropertyType
		{
			[CompilerGenerated]
			get
			{
				return type_1;
			}
			[CompilerGenerated]
			set
			{
				type_1 = value;
			}
		}

		public JsonConverter Converter
		{
			[CompilerGenerated]
			get
			{
				return jsonConverter_0;
			}
			[CompilerGenerated]
			set
			{
				jsonConverter_0 = value;
			}
		}

		public JsonConverter MemberConverter
		{
			[CompilerGenerated]
			get
			{
				return jsonConverter_1;
			}
			[CompilerGenerated]
			set
			{
				jsonConverter_1 = value;
			}
		}

		public bool Ignored
		{
			[CompilerGenerated]
			get
			{
				return bool_2;
			}
			[CompilerGenerated]
			set
			{
				bool_2 = value;
			}
		}

		public bool Readable
		{
			[CompilerGenerated]
			get
			{
				return bool_3;
			}
			[CompilerGenerated]
			set
			{
				bool_3 = value;
			}
		}

		public bool Writable
		{
			[CompilerGenerated]
			get
			{
				return bool_4;
			}
			[CompilerGenerated]
			set
			{
				bool_4 = value;
			}
		}

		public bool HasMemberAttribute
		{
			[CompilerGenerated]
			get
			{
				return bool_5;
			}
			[CompilerGenerated]
			set
			{
				bool_5 = value;
			}
		}

		public object DefaultValue
		{
			get
			{
				return object_0;
			}
			set
			{
				bool_0 = true;
				object_0 = value;
			}
		}

		public Required Required
		{
			get
			{
				return nullable_0 ?? Required.Default;
			}
			set
			{
				nullable_0 = value;
			}
		}

		public bool? IsReference
		{
			[CompilerGenerated]
			get
			{
				return nullable_2;
			}
			[CompilerGenerated]
			set
			{
				nullable_2 = value;
			}
		}

		public NullValueHandling? NullValueHandling
		{
			[CompilerGenerated]
			get
			{
				return nullable_3;
			}
			[CompilerGenerated]
			set
			{
				nullable_3 = value;
			}
		}

		public DefaultValueHandling? DefaultValueHandling
		{
			[CompilerGenerated]
			get
			{
				return nullable_4;
			}
			[CompilerGenerated]
			set
			{
				nullable_4 = value;
			}
		}

		public ReferenceLoopHandling? ReferenceLoopHandling
		{
			[CompilerGenerated]
			get
			{
				return nullable_5;
			}
			[CompilerGenerated]
			set
			{
				nullable_5 = value;
			}
		}

		public ObjectCreationHandling? ObjectCreationHandling
		{
			[CompilerGenerated]
			get
			{
				return nullable_6;
			}
			[CompilerGenerated]
			set
			{
				nullable_6 = value;
			}
		}

		public TypeNameHandling? TypeNameHandling
		{
			[CompilerGenerated]
			get
			{
				return nullable_7;
			}
			[CompilerGenerated]
			set
			{
				nullable_7 = value;
			}
		}

		public Predicate<object> ShouldSerialize
		{
			[CompilerGenerated]
			get
			{
				return predicate_0;
			}
			[CompilerGenerated]
			set
			{
				predicate_0 = value;
			}
		}

		public Predicate<object> GetIsSpecified
		{
			[CompilerGenerated]
			get
			{
				return predicate_1;
			}
			[CompilerGenerated]
			set
			{
				predicate_1 = value;
			}
		}

		public Action<object, object> SetIsSpecified
		{
			[CompilerGenerated]
			get
			{
				return action_0;
			}
			[CompilerGenerated]
			set
			{
				action_0 = value;
			}
		}

		public JsonConverter ItemConverter
		{
			[CompilerGenerated]
			get
			{
				return jsonConverter_2;
			}
			[CompilerGenerated]
			set
			{
				jsonConverter_2 = value;
			}
		}

		public bool? ItemIsReference
		{
			[CompilerGenerated]
			get
			{
				return nullable_8;
			}
			[CompilerGenerated]
			set
			{
				nullable_8 = value;
			}
		}

		public TypeNameHandling? ItemTypeNameHandling
		{
			[CompilerGenerated]
			get
			{
				return nullable_9;
			}
			[CompilerGenerated]
			set
			{
				nullable_9 = value;
			}
		}

		public ReferenceLoopHandling? ItemReferenceLoopHandling
		{
			[CompilerGenerated]
			get
			{
				return nullable_10;
			}
			[CompilerGenerated]
			set
			{
				nullable_10 = value;
			}
		}

		private void method_0()
		{
			if (string_0 == null)
			{
				bool_1 = false;
				return;
			}
			bool_1 = true;
			string text = string_0;
			int num = 0;
			while (true)
			{
				if (num < text.Length)
				{
					char c = text[num];
					if (!char.IsLetterOrDigit(c) && c != '_' && c != '@')
					{
						break;
					}
					num++;
					continue;
				}
				return;
			}
			bool_1 = false;
		}

		internal object method_1()
		{
			if (!bool_0 && PropertyType != null)
			{
				return Class195.smethod_41(PropertyType);
			}
			return object_0;
		}

		public override string ToString()
		{
			return PropertyName;
		}

		internal void method_2(JsonWriter jsonWriter_0)
		{
			if (bool_1)
			{
				jsonWriter_0.WritePropertyName(PropertyName, escape: false);
			}
			else
			{
				jsonWriter_0.WritePropertyName(PropertyName);
			}
		}
	}
}
